apply函數是一系列的,有些情況下可以用來取代for迴圈,做循環的動作,由於apply家族較為龐大,本篇只會介紹在資料分析中常用的幾種。
apply()
: 第一種最基本的函數,也是最常見的,可以在matrix
, dataframe
等資料形態中使用,下方就來舉一個例子。
MARGIN
表示要以行(填1
)或列(填2
)作計算標準,FUN
代表要運算的函數,也可以自己定義# 小考分數
day9 = data.frame(
May_score = c(80, 93, 99, 69, 80),
Ann_score = c(85, 82, 95, 67, 70),
Jay_score = c(90, 78, 92, 62, 50)
)
# 原始資料呈現
day9
May_score Ann_score Jay_score
1 80 85 90
2 93 82 78
3 99 95 92
4 69 67 62
5 80 70 50
# 計算個人分數總合
apply(day9, 2, sum)
May_score Ann_score Jay_score
421 399 372
# 計算每次小考三人的平均分數
apply(day9,1,mean)
[1] 85.00000 84.33333 95.33333 66.00000 66.66667
lapply()
: 可以在vector
, list
, dataframe
等資料型態中使用,回傳的結果會是list
且資料長度與輸入的資料相同
list
day9 = list(
May_score = c(80, 93, 99, 69, 80),
Ann_score = c(85, 82, 95, 67, 70),
Jay_score = c(90, 78, 92, 62, 50)
)
# 原始資料呈現
day9
$May_score
[1] 80 93 99 69 80
$Ann_score
[1] 85 82 95 67 70
$Jay_score
[1] 90 78 92 62 50
# 計算個人平均分數
lapply(day9, mean)
$May_score
[1] 84.2
$Ann_score
[1] 79.8
$Jay_score
[1] 74.4
sapply()
: 可以在vector
, list
, dataframe
等資料型態中使用,用法和lapply()
相似,但是回傳的結果會是array型態
,資料長度也與輸入的資料相同
array
或matrix
list
型態的資料,可以看到回傳結果為array
sapply(day9, mean)
May_score Ann_score Jay_score
84.2 79.8 74.4
apply
函數系列其實還有很多,有興趣的人可再研究,這邊的介紹就告一段落了。
下一篇會開始介紹與dataframe
處理有關的package